package SparkRDD.RDD算子.Transformations.集合操作

import org.apache.spark.{SparkConf, SparkContext}
import org.junit.Test

class 交并差集合 {

  val conf = new SparkConf().setMaster("local[6]").setAppName("sample")
  val sc   = new SparkContext(conf)

  /*
    * union 表示并集，与数学概念里的不同处在于，它可以重复，也就是两个集合的所有元素
   */
  @Test
  def unionTest: Unit ={
    val rdd1 = sc.parallelize(Seq(1,2,3,4,5))
    val rdd2 = sc.parallelize(Seq(3,4,5,6,7))

    rdd1.union(rdd2)
      .collect()
      .foreach(println(_))    // 1 2 3 4 5 3 4 5 6 7
  }

  /*
    * intersection 表示交集
   */
  @Test
  def intersectionTest: Unit ={
    val rdd1 = sc.parallelize(Seq(1,2,3,4,5))
    val rdd2 = sc.parallelize(Seq(3,4,5,6,7))

    rdd1.intersection(rdd2)
      .collect()
      .foreach(println(_))   // 3 4 5
  }

  /*
    * subtract 表示差集, a 差 b --- a中独有的元素 ；b 差 a --- b 中独有的元素
   */
  @Test
  def subtractTest: Unit ={
    val rdd1 = sc.parallelize(Seq(1,2,3,4,5))
    val rdd2 = sc.parallelize(Seq(3,4,5,6,7))

    rdd1.subtract(rdd2)
      .collect()
      .foreach(println(_))   // 1 2
  }



}
